home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
476-500
/
disk_489
/
automata
/
automata.doc
< prev
next >
Wrap
Text File
|
1992-05-06
|
43KB
|
884 lines
1
Automata
Copyright © 1991 by Jerry Mack. All rights reserved.
Automata is an extremely versatile, cellular-automaton simulation.
Virtually every aspect of the simulation can be altered, saved and later
recalled. Also, Automata supplies many powerful editing functions (e.g.
patterns, rotations, reflctions, and more) for creating and modifying
cell configurations. Additional features include editable icons, an
immense variety of rules from which to choose, "music" which changes as
the cell configuration changes and methods to speed execution from 3 to
60 (or more) generations per second.
Introduction:
A cellular automaton consists of the following: 1) a collection of
cells; 2) a set of states, important because each cell must be in one of
these states at all times; and 3) a set of rules which determine how the
cell-states "evolve" with time.
The cells in Automata are arranged in a 100x100 array known as the
playfield. Each cell occupies a small square in the playfield, and each
square has up to eight neighboring squares which touch it on a side or
corner. Cells along the edges of the playfield have fewer than eight
neighbors, but they can be treated as if they have more neighbors by
connecting the edges. The way in which the edges are connected is known
as the topology of the playfield. More on topologies later.
Take any cell in the playfield and call it the home cell. Each home
cell has a neighborhood associated with it. This neighborhood usually
consists of some or all of the eight cells surrounding the home cell.
Normally, each cell in the playfield has the same type of neighborhood.
We can specify a "rule of evolution" for a cell based upon the home
cell's state and the states of its neighboring cells. For example, we
might require that if the home cell and three of its neighbors are ON
during this generation, then the home cell will be ON during the next
generation. However, if the home cell and MORE than three of its neighbors
are ON during this generation, then the home cell will be OFF during the
next generation.
Another example can be taken from John Conway's popular game known
as "Life":
1) If the home cell is ON and two or three of its neighbors are
on, the home cell will be ON during the next generation.
2) If the home cell is OFF and three of its neighbors are on, the
home cell will be ON during the next generation.
3) Otherwise, the home cell will be OFF during the next generation.
The neighborhood in Life consists of all eight cells surrounding the
home cell, and each cell can be in one of two states: ON or off. This
simple rule gives rise to patterns which spin, crawl, breed, evolve and
perform other amazing feats. Remarkable, when you consider that these
patterns are no more than bits in the computer's memory.
2
To observe some of these Life patterns, perform the following
actions immediately after starting Automata:
1) Click on the Evolution gadget, putting you in Evolution mode.
2) Click on the Life gadget, giving you access to the Life models.
The default rules (for the black background) are Conway's rules.
3) Click on the Accept gadget, returning you to the Main screen.
4) Click on the Population gadget so you can edit the cell patterns.
5) Click on the Randomization gadget (middle of the screen at the
(right edge, a box with a bunch of dots in it) once or twice.
This will add cell states at random locations on the playfield.
Alternatively, you may click the left mouse button when the
pointer is in the playfield. This will turn ON or OFF the cell
underneath the pointer. If you hold down the left mouse-button
while moving the mouse, you will continuously change the cells
over which the pointer passes.
6) Click on the Accept gadget to return to the Main screen.
7) Click on the Flag gadget to start the evolution.
You can stop the action (and regain control of Automata) by clicking the
left mouse button.
Among the many features of Automata is the use of four different ON
states instead of just one. Thus, your rules of evolution can allow ON
states to evolve into other ON states or into the OFF state. Also, you
may have up to four different automata on the playfield, each with its
own rule of evolution. Thus if you put the black automaton on the left
half of the screen and the white automaton on the right half, then any
patterns which cross from one side to the other will evolve differently
than before. Just how differently depends on your choice of rules.
The Evolution screen was designed to allow you to quickly change your
rules and observe how the patterns respond. Likewise, many powerful and
easy-to-use commands have been placed in the Populate screen, eliminating
much of the tedium in creating and modifying patterns.
The Music screen gives you considerable leeway in "composing" the
music (noise?) the patterns can create. Unfortunately, I did not have
time to implement the digitized sounds I had hoped to use (violin, flute,
etc.). Thus, only a simple sine-wave pattern is available for sounds.
If there is enough interest, I may correct this deficiency.
The Icons screen allows you to change the icons for each state. The
different icon sizes represent the different zoom factors available.
You will need at least 768K of memory to run Automata. Sorry...
Finally, there are many things I dislike about Automata, (the bugs,
the region-handling, the music(?), etc.) but I can't spend any more time
on this project. I hope you can find some enjoyment from Automata.
Jerry Mack
3
I) Main Screen
Let me cover the features of the right hand side of the display,
known as the control panel. First, there is the Topology gadget, which
allows you to select what type of topology to assign to the playfield.
Clicking on this gadget creates a pop-up menu underneath the pointer,
allowing you to choose one of fifteen topologies. The topology assigned
to the playfield when Automata starts up is the Torus, which connects
the top and bottom edges together, as well as the left and right edges
together. Thus, the cells along the top edge have the cells along the
bottom edge as their neighbors and vice-versa (similarly for the left
and right edges). Cells at the corners of a Torus have neighbors on
every edge of the playfield.
The available topologies are as follows:
Square: Do not connect the edges;
R Cylinder: Connect the top row to the bottom row;
C Cylinder: Connect the left column to the right column;
R Mobius Strip: Twist-connect the top row to the bottom row (connect
the lower right cell to the upper left cell, etc.);
C Mobius Strip: Twist-connect the left column to the right column;
Torus: Connect the top row to the bottom row and the left column to the
right column;
UL Cone: Connect the left column to the top row;
UR Cone: Connect the right column to the top row;
LL Cone: Connect the left column to the bottom row;
LR Cone: Connect the right column to the bottom row;
ULLR Sphere: Connect the left column to the top row and the right column
to the bottom row;
LLUR Sphere: Connect the left column to the bottom row and the right
column to the top row;
R Klein Bottle: Connect the left column to the right column and
twist-connect the top row to the bottom row;
C Klein Bottle: Connect the top row to the bottom row and twist-connect
the left column to the right column;
Projective Plane: Twist-connect the top row to the bottom row and the
left column to the right column.
Note:
R means row-connected,
C means column-connected,
UL means upper-left-connected,
UR means upper-right-connected,
LL means lower-left-connected,
LR means lower-right-connected,
ULLR means upper-left-to-lower-right connected and
LLUR means lower-left-to-upper-right connected.
4
Next, the Neighborhood gadget allows you choose which of the home
cell's nearby cells will be considered as neighbors. Clicking on the
Neighborhood gadget displays a pop-up menu beneath the pointer, allowing
you to easily choose a neighborhood. The dark cell in the center of each
neighborhood represents the home cell, and the light cells surrounding
it represent which cells will be considered as its neighbors during
evolution.
The Switching item in the Neighborhood pop-up menu demonstrates
another feature of Automata: dual neighborhoods. You can have Automata
switch between neighborhoods automatically as often as you wish. The
current neighborhood is indicated by the triangular pointer between the
two neighborhood icons (underneath the Neighborhood gadget). Choosing
the Switching item brings up a requester, allowing you to change the
current neighborhood and to decide when to switch neighborhoods.
The Sound gadget (below the Flag gadget) allows you to turn on
(and off, fortunately) the "music" feature of Automata. Each of the
four audio channels of the Amiga is assigned an ON state. The note and
volume output by each audio channel is determined by the number of cells
in the channel's associated state.
The Flag gadget, as mentioned, allows you to start and stop the
simulation. Actually, any mouse click will stop the simulation.
Another method of starting/stopping the simulation is the Single-step
menu item under the Special menu. This item starts the simulation for
one cycle and then stops it. Use this when you want to examine closely
how a particular configuration evolves.
The Multi-step menu item is also related to the Flag gadget, in
that you can set the number of generations Automata will evolve before
stopping when you click on the Flag gadget. Thus, if you want the
simulation to stop every fifteen cycles, choose the Multi-step item,
enter "15" into the string gadget, and click on the Accept gadget.
Whenever you click on the Flag gadget, Automata will stop the simulation
after 15 cycles (or after a click of the left mouse-button).
In case you didn't notice, I used the word cycles instead of
generations the past few paragraphs. That is because the unit of
evolution in Automata is the cycle. The unit of evolution for each
state is the generation. Thus, each state may take more than one cycle
before it evolves. You can use this feature to create fast-breeding
states and slow-breeding states. Be careful, though, as slow-breeding
states can be affected by other states (e.g. predators) while waiting to
evolve. You choose the number of cycles each state waits before evolving
by selecting the Generations menu item under the Special menu.
Next in line in the Special Menu is the Updates item, which allows
you to specify how many cycles to allow the playfield to evolve before
redrawing the display. The default is to redraw the playfield every
cycle, so that you can observe all the changes. If you only want to
observe every fifth cycle, then choose this menu item, type "5" into the
upper string gadget and select the Accept gadget. Now, whenever you
turn on the simulation, the display will redrawn only once for every
five cycles of evolution.
5
The Updates menu item is one way to speed up the evolution of
Automata. A more effective way is the use of Evolve regions, which
restrict evolution to the region of the playfield you specify.
Selecting the Evolve region menu-item under the Special menu highlights
the current Evolve region, which is the entire playfield when you start
Automata. If you press the left mouse button over one corner of the new
Evolve region, drag the mouse to the other corner and release the mouse
button, you will have specified a new Evolve region. All evolution will
be restricted to this Evolve region, allowing substantial improvements
in execution speed.
Note: when the Evolve region is visible, you may keep redrawing
the region until you are satisfied with it. You can remove the Evolve
region display by clicking the mouse in the playfield, clicking on a
gadget or making a menu selection.
The final item in the Special menu is the Screen to back item,
which allows you to access the other tasks running on your Amiga. No
machine hogs here.
The Display menu highlights the accounting features of Automata.
These dislplays slow down the simulation somewhat, but offer information
which will be of interest at various times during the simulation.
The View menu allows you change your view of the playfield for
better inspection and/or population. Specifically, you may zoom in (a
maximum of two times) or zoom out; pan left, right, up or down; and
you may quickly move to the corners or center of the playfield (useful
when you've zoomed in).
The Project menu allows you to save and restore virtually every
feature of Automata. A caveat is in order: the file requester I am
currently using does not work well, making it difficult to create new
files. After several attempts to create a new file, it should send the
name to Automata even after you click on the Cancel gadget. If you have
the requester re-examine the contents of the directory, you will find
your file and can restore it. Alternatively, you may create a dummy file
from the shell and choose that file as you save file.
I want to point out a final feature visible in the Main screen:
multiple automata. As I mentioned, you can choose from an IMMENSE
variety of evolutionary rules. What I didn't mention was that you can
have different rules applied at different cells in the playfield.
Automata allows you to have four sets of rules active, each set being
referred to as an automaton. Thus each cell has an underlying automaton
affixed to it, as well as the state currently assigned to it. The rules
assigned to a state do not change during evolution, for they determine
how the cell will change states as it evolves. The states, of course
may or may not change as the cell evolves. The different rules are
denoted by the underlying automaton icon assigned to each cell. The
default icons are simply the colors black, dark grey, light grey and
white. The state icons are drawn over the automaton icons, but the
automaton icons are always present, allowing you to determine which set
of rules apply at each cell in the playfield.
The remaining gadgets in the Main screen (to the right of the Flag
and Sound gadgets) activate the other modes of Automata. These modes
allow you to modify the rules, change the cell configurations, alter the
music created by the state configurations and modify the icons used to
represent the states and automata.
6
II) Evolution Models
The number of rules available with eight neighbors and five states
is IMMENSE (approximately 10^1730 or 10 followed by 1730 zeros). Most
cellular-automaton simulations give you a choice of one rule, though
some give you up to a dozen or two. Automata gives you a LOT more (e.g.,
the Ecosystem Model alone contains more than 10^67 different rules).
With such an IMMENSE variety of rules from which to choose, you
need an easy and quick method of changing rules, since the whole point of
this simulation is discovering new types of evolution on an automaton
(and having fun, of course). The last thing you want is to spend 15
minutes reading a manual every time you want to change a rule. Thus, I
designed these models to be as intuitive and flexible as possible.
All of the models have four icons displayed at the bottom of the
screen, left of the Accept gadget in the control panel. These icons
allow you to have four separate sets of (evolution) rules present on
the playfield at any time. Clicking on one of these icons brings up the
rules currently defined for the associated automaton. You can then
change those rules and see what kind of configurations emerge. To find
out which set of rules are in effect at any cell in the playfield, you
need only look at the underlying automaton icon for that cell.
Because cells can be in several ON states, it is possible for a
cell to satisfy the conditions for more than one state at a time. In
other words, a cell might be able to evolve into more than one state in
the next generation. In order to resolve these conflicts as easily as
possible, any cell in such a quandary will be OFF in the next generation.
All of the evolutionary models have two main menus: a Project menu,
with which you can save the current model or restore a saved model; and
the Icons menu, with which you can view the icons in whatever size you
are most familiar. Following are brief descriptions of each of the
models available in Automata, from which you choose evolution rules.
Life Model
The icons on the left represent the ON states, and the numbers to
their right represent the number of neighbors in that state required for
the birth or continued life of a cell.
For example, suppose the number 3 lies below the egg and to the
right of the first state-icon. Then any cell which is OFF and has three
neighbors in the first state will itself be in the first state the next
generation. Likewise, suppose the numbers 2,3 lie below the sunrise-by-
the-river icon and to the right of the first state-icon. Then any cell
which is in the first state must have either two or three neighbors in
the first state to remain in the first state the next generation.
In the default rules, all of the states behave the same in a given
automaton, though they behave differently for different automata:
Neighbors of same state Neighbors of same state
Automaton needed for a birth needed to avoid death
black 3 2 or 3
dark gray 2 2 or 3
light gray 2 3 or 4
white 2 1 or 2
7
To change any of the values for the birth or life requirements,
click on the left or right arrow in the appropriate row and column.
The left arrow decreases the value(s) above it, while the right arrow
increases the value(s). Any changes you make with the arrows apply only
to the current automaton. To change the rules for another automaton,
simply click on the gadget surrounding the desired automaton.
Ecosystem Model
The icons on the lower left of the screen represent the ON states
available. Clicking on one of these brings up the rules applying to
that state when it is in the selected automaton. The egg and sunrise
icons have the same meaning as in the Life Model, only now you have a
wider selection of neighbors for them. When the button image behind a
number disappears, that number has been selected. Thus, the birth and
life rules for the first (leftmost) state in the first (black) automaton
are the same as in the Life Model: three like neighbors for a birth and
two or three like neighbors to avoid death.
The other two icons represent a predator (far left) and a virus (to
the immediate right of the predator). The three states below these two
icons represent the states other than the selected state. The selected
state can prey upon or infect any of these states. The numbers below the
predator and virus icons represent the number of neighbors required for
the selected state to prey upon or infect another state. If a cell is
preyed upon, that cell will be OFF next generation. If a cell is
infected, that cell will become the selected state next generation. As
always, conflicts result in the cell being OFF next generation.
As an example, take the predator and infection rules for the first
(black) automaton. If you select either of the first two states (lower
left of the screen), you will find that neither of them preys upon or
infects the other states. However, if you select the third state, you
will find that it can infect the each of the remaining states. Select
the prey state at the upper-left of the screen to examine/modify the way
in which the third state preys/infects the other states. The default
rules are as follows: if a cell in state #3 has 7 or 8 neighbors in state
#1, then that cell will be in state #1 next generation; if a cell in state
#2 has between 4 and 8 neighbors in state #1, then it will be in state #1
next generation; and if a cell in state #4 has between 5 and 8 neighbors
in state #1, then it will be in state #1 next generation.
Following the same steps for state #4 instead of state #3 shows
that state #4 only preys upon two of the other states. Thus, if a cell in
state #1 has 2 or 3 neighbors in state #4, then the cell will be empty the
next generation. Also, If a cell in state #2 has 1, 2 or 3 neighbors in
state #4, then the cell will be empty next generation.
By selecting different combinations of automaton, predator/virus and
prey icons, you can quickly change the behavior of the patterns of states.
Species Model
Each non-empty cell evolves from state #1 to state #4 to an empty
(dead) cell. Thus, a cell in state #1 will be in cell #2 next generation,
in state #3 the following generation, then on to state #4 and will be
empty again the generation following that.
8
Births are allowed when an empty cell has the proper number of breeding
neighbors. A neighbor is considered a breeder if it is in state #2 or
state #3. The default rule for the black automaton allows an empty cell
to give birth (i.e., become state #1 next generation) if between 2 and 5
of its neighbors are breeders.
Cycles Model
The key to this model is the Palette, which allows you to choose
an active state. This active state can then be inserted into the boxes
to the right of an arrow or a colon.
Look at the box labelled Cycles: this box shows you how a cell in
a non-empty state will evolve the next generation. For example, in the
default rules, the first line in the Cycles box has state #1 evolving
into state #3, state #2 evolving into the off state (N stands for None),
state #3 evolving into state #2 and state #4 evolving into state #3.
Thus, a cell in state #4 would be in state #1 the next generation, state
#3 the following generation, state #2 the generation after that and would
finally become empty the subsequent generation.
The Births section (in the center of the screen, top to bottom, 11
rows with colons in them) details how empty cells will evolve based upon
the type of neighbors they have. In the row near the top of the screen,
again using the default rules, an empty cell having at least one neighbor
in each state would be in state #2 the next generation. Likewise, a cell
with at least one neighbor in state #1, at least one neighbor in state #2
and at least one neighbor in state #3 (but no neighbors in state #4) would
be in state #3 the following generation (second row).
You can change the Birth and Cycle rules by clicking the mouse while
the pointer is in any of the dark blue boxes to the right of a colon or an
arrow. The contents of the selected box will be replaced with the icon of
the currently selected state in the Palette. Thus, if you selected the N
icon in the Palette box (no state) and clicked in each of the boxes to the
right of arrow in the Cycle box, then all non-empty cells would be empty
the next generation,
Modulo Math Model
In this model, each cell is a computer that you can program. Every
state has associated with it a value and an operation. The value of the
state can be found below the state's icon on the left of the screen. The
operation associated with the state can be found to the right of the icon
representing that state. The available operations are as follows, reading
from left to right: addition, subtraction, multiplication, integer
division, modulo division and exponentiation.
The value of the state can be modified by clicking the left mouse-
button when the pointer is over the value. A pop-up menu appears allowing
you to select a value. If the chosen value is being used by another state,
then that state's new value is the chosen state's old value. You may change
the operation of a state by selecting the new operation.
At the start of every generation, each cell is assigned the value
associated with its state (empty cells are assigned the value 0). Each
cell then has its value modified by its neighboring cells, starting with
neighbors in state #1 and continuing sequentially through neighbors in
state #4.
9
In order to explain this model in more detail, I shall use examples
from the default rules for the black automaton. The first state has a
value of 2 and the operation of addition. Thus, whenever a cell has a
neighbor in state #1, the value of 2 is added to the current value of the
cell to yield the cell's new value. After this operation, the cell's
current value is modified by modulo division, the base being the value
shown at the lower-left of the screen. This modulo base may be changed
via the Modulo menu available only in this model.
This operation described above is repeated for each of the cell's
neighbors in state #1. Thus, if a cell has four neighbors in state #1,
then 2 would be added to the cell's value (modulo 10) to yield the cell's
new value; this would be repeated three more times to yield the cell's
value after interacting with its neighbors in state #1. After finishing
with state #1, the cell would interact with its neighbors in state #2,
state #3 and state #4 (in that order). Empty neighbors have no effect
upon the value of the cell.
The new state of the cell is determined by the value the cell has
after interacting with its neighbors: if the new value corresponds to
a value associated with a state, then the cell will be in that state the
next generation; otherwise, the cell will be empty the next generation.
Finally, the method in which the operations are carried out requires
explaining. In all cases, the value of a cell is operated UPON by the
value of its neighbors. So if a cell currently has the value 4 and the
neighbor being tallied has the value 2, then the possible operations are
as follows:
ADDITION 4 + 2 = 6
SUBTRACTION 4 - 2 = 2
MULTIPLICATION 4 * 2 = 8
INTEGER DIVISION 4 / 2 = 2
MODULO DIVISION 4 % 2 = 0
EXPONENTIATION 4 ^ 2 = 6
The value for exponentiation is 6 instead of 16 because each operation is
divided modulo 10 (in the default rules).
Circuits Model
This model is similar to the above model, except that the values are
bit-patterns and the operations are the logical operations AND, OR, XOR,
NOT, NAND, NOR and XNOR. The operations are carried out in the same manner
as in the Modulo Math Model, starting with neighbors in state #1 and ending
with neighbors in state #4. Also, because these are logical operations
upon bit-patterns, no modulo division is performed after each operation.
If a cell has a bit-pattern of 0101 and the neighbor being tallied
has a bit-pattern of 0011, then the new bit-pattern of the cell is as
follows for each of the logical operations:
0101 AND 0011 = 0001
0101 OR 0011 = 0111
0101 XOR 0011 = 0110
NOT 0101 = 1010
0101 NAND 0011 = 1110
0101 NOR 0011 = 1000
0101 XNOR 0011 = 1001
10
Voting Model
The icons represent four political factions: liberal (dove),
conservative (hawk), independent (middle-of-the-road) and extremist (time
bomb). The default voting rule is that the the plurality wins, meaning
that a cell will evolve into the state of which the cell has the most
neighbors. Thus, if a cell has three neighbors in state #1, two neighbors
in state #2, two empty neighbors and one neighbor in state #4, then the
cell will be in state #1 the next generation (regardless of the cell's
current state).
You can limit or disable the default rule via the Elect menu, which
allows you to specify bounds within which a state can "win" an election.
For instance, suppose a cell has three neighbors of state #3 and no
others. Normally, that cell would evolve into state #3 next generation.
However, if the election limits are from 4 to 6 (bottom left corner of
the screen), then the cell will be empty next generation because the
plurality wasn't large enough.
You can alter the default rule further by invoking the special rules
of "siege" conversion, internal dissent and persuasion. Any cell which
has the specified number of neighbors for each special rule will invoke
the special evolution indicated. As in all the models, any conflict
results in an empty cell next generation. The range of values which can
invoke a special rule can be changed by clicking the left mouse-button when
the pointer is over that rule's value-box. A pop-up menu will appear which
allows you to select a new range of values or to disable the special rule.
Consider the default rules for the black automaton: in the following
explanation of these special rules, I shall use the synonyms HAWK, MODERATE,
DOVE and EXTREMIST for states #1, #2, #3 and #4, respectively. Then the
special rules are as follows:
If a cell has and the cell then the cell
as neighbors is in state will become a(n)
Siege conversion #1: 4 or more HAWKS DOVE EXTREMIST
Siege conversion #2: 5 or more DOVES HAWK EXTREMIST
Internal dissent: 3 or more EXTREMISTS EXTREMIST EMPTY
Persuasion #1: 5 or more DOVES MODERATE DOVE
Persuasion #2: 4 or more HAWKS MODERATE HAWK
The five special rules above, if activated, have precedence over the
plurality rule, regardless of the election limits. As always, any conflict
over the future of a cell results in that cell being empty next generation.
Battle Model
This model is designed to create pattens which can "move" about the
screen like spaceships in a video game. While the general rules are fixed,
you can specify what happens when ships collide or are near a collision.
In the following discussion, I shall use the synonyms SHIP #1, COLLISION,
SHIP #2 and ENGINE for states #1, #2, #3 and #4, respectively.
11
The three rules you can modify are as follows: 1) When a cell which
contains SHIP #1 has a neighbor containing a COLLISION, you can choose for
the cell to contain either a COLLISION or SHIP #1 next generation. 2) When
a cell which contains SHIP #2 has a neighbor containing a COLLISION, you
can choose for the cell to contain either a COLLISION or SHIP #2 next
generation. 3) When a cell contains SHIP #1 has a neighbor containing
SHIP #2, you can choose for the cell to contain a COLLISION, SHIP #1, or
SHIP #2 the next generation.
For those interested in recreating this model (or some variant) on
their own, I include the pseudocode for the one-ship case; the two-ship
case is too complex to describe here. Since only one ship is allowed, no
collisions are possible, so there are only three states possible: ship,
engine and empty. Here is the algorithm (comments are in parentheses):
IF cell IS engine THEN
cell BECOMES empty
ELSE IF cell IS ship
cell BECOMES engine
ELSE (cell IS empty)
IF cell HAS 2 ship-neighbors THEN
cell BECOMES ship
ELSE
cell REMAINS empty
ENDIF
ENDIF
This rule is simple enough that you can experiment on your own by
adding collisions, more ships, etc. If there is enough interest, I may
release the two-ship algorithm that I use.
III) Population Mode
This is essentially a sophisticated paint mode, except you are working
with cell states and automata instead of colors. All of the features below
operate upon the Edit region, unless otherwise specified. The Edit region
is a rectangle on the playfield which you can resize by selecting the Edit
region menu-item under the Special menu. You then press the left mouse-
button (don't release it yet) when the pointer is at one corner of the new
region and drag the pointer to the other corner, where you finally release
the left mouse-button. The contents of the region are copied to a buffer
for later pasting.
The Paste All menu item allows you to paste the entire contents of
the edit region anywhere in the playfield (an outline of the new region
will follow the pointer). The Paste some menu-item is similar, except
that it only copies non-empty cells in the edit region. Finally, the
Paste one menu-item only copies the cells in the currently-selected state.
To get out of copy mode, select one of the patterns in the Pattens menu.
12
The upper gadget allows you to choose between the cell states and
the automata. The palette will display the state (automaton) icons when
you are modifying the cell-state (automaton) configurations. The name
below the palette refers to the pattern which will be on the playfield
where you click the left mouse-button. Thus, in Point mode you will
change individual cells, whereas in Block mode you will change four
cells at a time. There are 64 patterns available in the Patterns menu
plus the Point mode in the Special menu.
The row-and-column indicator displays the row and column of the
cell under the pointer. When the pointer moves out of the playfield,
the row and column numbers are erased.
The Replace gadget allows you to replace one state/automaton with
another (remember, these operations are performed upon all cells within
the Edit region). When you click on this gadget, a prompt appears
asking you to select an icon. The state/automaton you select will
replace whatever state/automaton was previously selected.
The Swap gadget works much the same as the Replace gadget, except
that any occurrence of either of the two states/automata will be
replaced by the other state/automaton.
The Remove gadget removes all instances of the selected state/
automaton from the Edit region. The Clear gadget removes all states
from the Edit region when editing cell states. When editing automata,
automata #2, #3, and #4 will be replaced by automata #1, since each cell
must have an automaton (a set of evolutionary rules) assigned to it.
The Flood gadget will insert the selected state/automaton into
every cell of the Edit region.
The Undo gadget will undo the most recent populate operation
performed.
The Reflection gadgets are, from left to right: ULLR (upper-left
to lower-right), LLUR (lower-left to upper-right), Vertical and
Horizontal. The names refer to the direction within the Edit Region
through which the cells are reflected. Thus, if the Horizontal reflec-
tion is selected, the cells in the Edit reflection will be reflected
across the vertical line through the middle of the Edit region.
The Randomization gadget fills a random distribution of cells in
the Edit region with the selected state/automaton. The density at which
it populates cells within the region can be modified by choosing one of
the menu-items below the Randomization Density menu-item in the Special
Menu.
The Rotation gadgets (90°, 180° and 270°) work the same as the
Reflection gadgets, with the exception that the cells within the Edit
region are rotated about the center of the region instead of being
reflected. Since only square regions can be rotated, the rotation
will only be performed upon the largest square which can fit wholly
within the Edit region.
The Translation gadgets shift the Edit region Left, Right, Up and
Down. The shifts occur entirely within the Edit region; thus, a Right
translation will move the right-most column in the Edit region to the
left-most column in the region. The number of cells to shift is given
by the value in the integer gadget right of the Translation gadgets.
13
The Project Menu allows you to save/restore specific regions of
the screen. You can save/restore either cell-state or automaton
patterns. When saving, only the cell states or the automata are saved,
depending upon which is being populated (see gadget at top of control
panel).
The View menu allows you to pan and zoom through the playfield,
which can significantly reduce the effort involved in creating precise
patterns of cell states and/or automata.
IV) Music(?) Mode
Automata allows you to create "music" based upon the cell patterns
at each generation. Each of the ON states is assigned to one of the
Amiga's audio channels. After each generation, the number of cells
in each state are counted and the notes and volumes to be played are
calculated. Then the calculated notes are played until the next
generation or until the "music" is turned off by clicking the Music
gadget (earmuffs when off, musical notes when on).
The notes to be played are calculated as follows: If the number of
cells in a state fall within the Low and High thresholds for that state,
a note will be played in the associated audio channel. The note to be
played will fall between the Low and High note. There is a direct
relationship between how far is the note played from the Low note and
how far is the number of cells in that state from the Low threshold.
The lower the number of cells in that state (while still between the
thresholds), the lower the note will be played. Likewise, the higher
the number of cells, the higher the note played.
The Project menu allows you to save and/or restore Music config-
urations. The Icons menu allows you to display the icons with which you
are most familiar.
V) Icons Mode
This is a paint mode which allows you to modify the icons used to
represent the states and automata. Because you can zoom in and out to
three levels within the playfield, there are three sets of icons which
you can edit. The Small, Medium and Large gadgets switch between those
three sets of icons.
Below the icon-size gadgets lies the color palette. The selected
color is the one which most paint operations will use. If you click the
left mouse-button inside the magnified image of the selected icon, the
underlying pixel will be changed to the selected color. The only
exception is color #1 (black), which is actually transparent for cell
states, allowing you to see part of the underlying automaton.
The upper row of icon gadgets (below the magnified icon) are the
icons of the cell states; the left column of icon gadgets are the icons
of the automata. Selecting any one of these gadgets will display a
magnified image of the associated icon, allowing you to make pixel-level
changes to the icon. The matrix of icon images displays every possible
combination of cell states overlying automata. This is of use in
avoiding icons which are difficult to distinguish from each other,
especially when the underlying automata icons show through.
14
The Copy gadget allows you to copy one icon to another. When you
select the Copy gadget, a prompt appears asking you to select an icon.
The icon you select will be replaced by the previously selected icon.
The Swap gadget works much the same way as the Copy gadget, except
the two selected icons are swapped.
The Dye gadget allows you to replace a color in an icon with
another color from the palette. When you select the Dye gadget, you are
prompted to select another color. The color you select will replace the
previously selected color within the currently selected icon.
The Flood gadget will fill the selected icon with the selected
color.
The Undo gadget will undo the most recent icon-edit operation.
The Reset gadget will restore the icons which were in effect when
you entered the Icons Mode.
The Project Menu allows you to save/restore icon images you
create. If you don't like what you see, you can always change it.
Bugs (things I did not have time to fix or replace):
1) The Randomization Density menu-items in the Population mode
do not work correctly in this version. I could neither find
nor recreate the original version of Automata, so you'll have
to be satisfied with this beta version. Sorry...
2) The file requester (from Inovatronics) won't allow you to
create files, at least not easily. Thus, if you want to save
the environment of any portion of Automata, you might want
to first create a dummy file with the desired name.
3) When you run Automata, the memory allocated for the Micro and
Led fonts is not deallocated. Thus, the first time (and ONLY
the first time) you run Automata, you will see a loss of about
5K of memory. This memory isn't really lost, since these fonts
can be allocated by other tasks.
4) I wanted to replace the simple sine-wave patterns I send to the
audio channels with digitized samples of violins, flutes, or
some other instrument. I probably would have allowed you to
load digitized sounds from SMUS or IFF files or whatever.
VI) Limitations
While Automata was designed to work in a multitasking environment,
it is possible to overload the Amiga when running Automata. Running two
copies of Automata is one way to crash the Amiga (but only if both
copies are drawing to the screen). Other tasks which directly access
the blitter may also experience difficulties when Automata is running,
though I have not tested this exhaustively.